package main

import "fmt"

/**
运算符
*/
func main() {

	/**
	算术运算符
	*/
	a := 10
	b := 20
	fmt.Printf("%d\n", a+b) //30
	fmt.Printf("%d\n", a-b) //-10
	fmt.Printf("%d\n", a*b) //200
	fmt.Printf("%d\n", a/b) //0
	fmt.Printf("%d\n", b/a) //2
	//fmt.Printf("%d",a++)//	这种写法不支持写在括号中
	//fmt.Printf("%d",a--)

	/**
	go语言中没有前++和--
	*/
	a++
	b--
	fmt.Printf("%d\n", a) //11
	fmt.Printf("%d\n", b) //19

	yw := 90
	sx := 88
	yig := 86
	avg := (yw + sx + yig) / 3
	fmt.Printf("%d\n", avg)
	fmt.Printf("%d", (yw + sx + yig))

	//go语言当中没有隐式转换，只有显示转换，并且相互转换的类型必须兼容
	/**
	赋值运算符
	*/
	yw += 10
	fmt.Printf("%d\n", yw)
	sx -= 10
	fmt.Printf("%d\n", sx)
	sx *= 10
	fmt.Printf("%d\n", sx)
	sx /= 10
	fmt.Printf("%d\n", sx)
	sx %= 10
	fmt.Printf("%d\n", sx)

	/**
	关系运算符
	*/
	fmt.Printf("%t\n", yw == sx)
	fmt.Printf("%t\n", yw >= sx)
	fmt.Printf("%t\n", yw <= sx)
	fmt.Printf("%t\n", yw != sx)
	fmt.Printf("%t\n", yw > sx)
	fmt.Printf("%t\n", yw < sx)

	/**
	逻辑运算符
	*/
	flag := false
	sign := true
	fmt.Printf("%t\n", !flag)         //true
	fmt.Printf("%t\n", !flag && sign) //true 两个都为true则为true  true
	fmt.Printf("%t\n", flag || !sign) //两个都为false才为false  false

	/**
	其他运算符
	*/
	fmt.Println(&flag) //取flag的地址值
	//*可以取变量所指向的内存地址

}
